/**
 * 
 */
package br.com.sguc.sessionBean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJBException;
import javax.ejb.Stateless;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import javax.persistence.TypedQuery;

import br.com.sguc.entidade.Jogador;
import br.com.sguc.entidade.Usuario;
import br.com.sguc.interfaces.JogadorRemote;

/**
 * @author Ana Carolina 29/09/2013
 */
@Stateless
public class JogadorSessionBean implements JogadorRemote {

	@PersistenceContext
	private EntityManager em;
	@SuppressWarnings("unused")
	private Usuario usuario;

	public JogadorSessionBean() throws IOException {

		this.usuario = new Usuario();

		if (!FacesContext.getCurrentInstance().getExternalContext()
				.getSessionMap().isEmpty()) {

			usuario = (Usuario) FacesContext.getCurrentInstance()
					.getExternalContext().getSessionMap().get("user");

		} else {

			FacesContext.getCurrentInstance().getExternalContext()
					.redirect("/SGUCWeb/pagina_sistema.jsf");
		}
	}

	@Override
	public void salvar(Jogador jogador) {
		try {

			em.persist(jogador);

		} catch (EJBException e) {

		} catch (PersistenceException e) {

		}

	}

	@Override
	public List<Jogador> listarJogadores() {
		TypedQuery<Jogador> query = em.createQuery("select j1 from Jogador j1",
				Jogador.class);
		return query.getResultList();
	}

	@Override
	public void excluir(Jogador jogador) {

		/* jogador = em.find(Jogador.class, jogador.getIdJogador()); */
		em.merge(jogador);

	}

	@Override
	public List<Jogador> pesquisar(String string, String status, int id) {

		List<Jogador> jogador = new ArrayList<>();

		if (status.equalsIgnoreCase("ATIVO,INATIVO")) {
			status = "'ATIVO', 'INATIVO'";
		} else {
			status = "'" + status + "'";
		}

		if (string.equalsIgnoreCase("")) {

			TypedQuery<Jogador> query = em
					.createQuery(
							"select j1 from Jogador j1 where id_usuario = '"
									+ id + "' and status in (" + status + ")",
							Jogador.class);

			jogador = query.getResultList();

		} else {

			TypedQuery<Jogador> query = em
					.createQuery("select j1 from Jogador j1 where nome like '%"
							+ string + "%' and id_usuario = '" + id
							+ "' and status in (" + status + ")", Jogador.class);

			jogador = query.getResultList();

		}

		return jogador;

	}

	@Override
	public void atualizar(Jogador jogador) {
		em.merge(jogador);

	}

	@Override
	public List<Jogador> pesquisar(String pesquisar, int id) {

		return null;
	}

	@Override
	public List<Jogador> pesquisarJogadorOnEquipe(int id) {

		List<Jogador> JogadoresOnEquipe = new ArrayList<Jogador>();

		TypedQuery<Jogador> query = em.createQuery(
				"select j1 from Jogador j1 where time_id = '" + id + "' ",
				Jogador.class);

		JogadoresOnEquipe = query.getResultList();

		return JogadoresOnEquipe;
	}

	@Override
	public List<Jogador> pesquisarJogadorOutEquipe(String string,
			String status, int idusuario, int idequipe) {

		List<Jogador> JogadoresOutEquipe = new ArrayList<Jogador>();
		if (string == null || string.equals("") || string.equals(" ")) {
			string = "";
		}

		TypedQuery<Jogador> query = em.createQuery(
				"select j1 from Jogador j1 where nome like '%" + string
						+ "%' and status = '" + status + "'"
						+ "and id_usuario = '" + idusuario
						+ "' and time_id is null", Jogador.class);

		JogadoresOutEquipe = query.getResultList();

		return JogadoresOutEquipe;
	}

	@Override
	public List<Jogador> validaQtdJogadores(int idEquipe) {

		TypedQuery<Jogador> query = em.createQuery(
				"select j1 from Jogador j1 where time_id = " + idEquipe,
				Jogador.class);

		return query.getResultList();

	}

}
